package com.pe.pgn.clubpgn.service.impl;

import java.util.List;
import java.util.Map;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import com.pe.pgn.clubpgn.dao.FlotaVehiculoDao;
import com.pe.pgn.clubpgn.dao.SincronizacionFlotaDao;
import com.pe.pgn.clubpgn.domain.ClprFlotaVehiculo;
import com.pe.pgn.clubpgn.service.FlotaVehiculoService;

@Service("flotaVehiculoService")
public class FlotaVehiculoServiceImpl extends GenericManagerImpl<ClprFlotaVehiculo, Long> implements FlotaVehiculoService{
	
	@Autowired
	private FlotaVehiculoDao flotaVehiculoDao;
	
	@Autowired
	SincronizacionFlotaDao sincronizacionFlotaDao;
	
	public int eliminarFlotaVehiculo(Long id) {
		
		sincronizacionFlotaDao.inactivarSyncPorFlotaVehiculo(id);
		return  flotaVehiculoDao.eliminarFlotaVehiculo(id);
	}

	public int guardarFlotaVehiculo(Long id, Long coFlota, String dePlaca,
			Long idTarjetaEmpresa, String deObservaciones) {
			
		int iResultado = flotaVehiculoDao.guardarFlotaVehiculo(
		id, coFlota, dePlaca, idTarjetaEmpresa, deObservaciones);
		return iResultado;			
	}

	public int eliminarFlotaVehiculo(Long coFlota, String dePlaca,
			Long idTarjetaEmpresa,String deObservaciones) {
			int iResultado = flotaVehiculoDao.eliminarFlotaCargaVehiculo(coFlota, dePlaca, idTarjetaEmpresa, deObservaciones);
			return iResultado;			
	}


	public ClprFlotaVehiculo obtenerFlotaVehiculo(Long id) {
		return flotaVehiculoDao.obtenerFlotaVehiculo(id);	
	}

	public List<ClprFlotaVehiculo> obtenerFlotaVehiculos(Long idFlota) {
		return flotaVehiculoDao.obtenerFlotaVehiculos(idFlota);
	}

	public List<ClprFlotaVehiculo> obtenerFlotaVehiculosAlias(
			String cadenaDeAlias) {
		return flotaVehiculoDao.obtenerFlotaVehiculosAlias(cadenaDeAlias);
	}

	public List<ClprFlotaVehiculo> obtenerFlotaVehiculosPlaca(
			String cadenaDePlaca) {
		return flotaVehiculoDao.obtenerFlotaVehiculosPlaca(cadenaDePlaca);
	}

	public List<ClprFlotaVehiculo> obtenerFlotaVehiculosTarjeta(
			String cadenaDeTarjeta) {
		return flotaVehiculoDao.obtenerFlotaVehiculosTarjeta(cadenaDeTarjeta);
	}

	public Long validaVehiculoFlota(String dePlaca,
			Long idFlotaVehiculo) {
		return flotaVehiculoDao.validaVehiculoFlota(dePlaca, idFlotaVehiculo);
	}

	public Map<String, ClprFlotaVehiculo> obtenerMapFlotaVehiculosPlaca(
			String cadenaPlacas) {
		return flotaVehiculoDao.obtenerMapFlotaVehiculosPlaca(cadenaPlacas);
	}

	@SuppressWarnings("unchecked")
	public void guardarFlotasVehiculos(Long flotaID, List dataSheet) {
		flotaVehiculoDao.guardarFlotasVehiculos(flotaID, dataSheet);
	}
}
